home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 1.toast / Sample Code / Contributed / SpriteWorld / SpriteWorld Files / Headers / SpriteLayer.h < prev    next >
Encoding:
Text File  |  2000-10-06  |  3.8 KB  |  149 lines  |  [TEXT/CWIE]

  1. ///--------------------------------------------------------------------------------------
  2. //    SpriteLayer.h
  3. //
  4. //    Portions are copyright: © 1991-94 Tony Myles, All rights reserved worldwide.
  5. //
  6. //    Description:    constants, structures, and prototypes for sprite layers
  7. ///--------------------------------------------------------------------------------------
  8.  
  9.  
  10. #ifndef __SPRITELAYER__
  11. #define __SPRITELAYER__
  12.  
  13.  
  14. #ifndef __SWCOMMON__
  15. #include <SWCommonHeaders.h>
  16. #endif
  17.  
  18. #ifndef __SPRITE__
  19. #include <Sprite.h>
  20. #endif
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26. #if PRAGMA_ALIGN_SUPPORTED
  27. #pragma options align=mac68k
  28. #endif
  29.  
  30.  
  31.     // The following macros make the code in SWCollideSpriteLayer slightly easier to read.
  32. #define SW_COLLISION_RECT_TOP(spriteP) \
  33.     (spriteP->destFrameRect.top + spriteP->curFrameP->collisionInset.top)
  34.  
  35. #define SW_COLLISION_RECT_LEFT(spriteP) \
  36.     (spriteP->destFrameRect.left + spriteP->curFrameP->collisionInset.left)
  37.  
  38. #define SW_COLLISION_RECT_BOTTOM(spriteP) \
  39.     (spriteP->destFrameRect.bottom - spriteP->curFrameP->collisionInset.bottom)
  40.  
  41. #define SW_COLLISION_RECT_RIGHT(spriteP) \
  42.     (spriteP->destFrameRect.right - spriteP->curFrameP->collisionInset.right)
  43.  
  44.  
  45. ///--------------------------------------------------------------------------------------
  46. //    sprite layer data structure
  47. ///--------------------------------------------------------------------------------------
  48.  
  49. struct SpriteLayerRec
  50. {
  51.     SpriteLayerPtr nextSpriteLayerP;    // next sprite layer
  52.     SpriteLayerPtr prevSpriteLayerP;    // previous sprite layer
  53.  
  54.     SpritePtr headSpriteP;                // head of sprite linked list
  55.     SpritePtr tailSpriteP;                // tail of sprite linked list
  56.  
  57.     long        userData;                // reserved for user
  58.     short        tileLayer;                // the tile layer this sprite layer is under
  59.     Boolean        isPaused;                // does this layer get processed by SWProcessSpriteWorld?
  60.     Boolean     layerIsNonScrolling;    // is this a non-scrolling SpriteLayer?
  61. };
  62.  
  63.  
  64. ///--------------------------------------------------------------------------------------
  65. //    sprite layer function prototypes
  66. ///--------------------------------------------------------------------------------------
  67.  
  68. SW_FUNC OSErr SWCreateSpriteLayer(
  69.     SpriteLayerPtr *spriteLayerP);
  70.  
  71. SW_FUNC void SWDisposeSpriteLayer(
  72.     SpriteLayerPtr *spriteLayerPP);
  73.  
  74. SW_FUNC OSErr SWAddSprite(
  75.     SpriteLayerPtr spriteLayerP,
  76.     SpritePtr newSpriteP);
  77.  
  78. SW_FUNC OSErr SWRemoveSprite(
  79.     SpritePtr oldSpriteP);
  80.  
  81. SW_FUNC void SWRemoveAllSpritesFromLayer(
  82.     SpriteLayerPtr srcSpriteLayerP);
  83.  
  84. SW_FUNC void SWDisposeAllSpritesInLayer(
  85.     SpriteLayerPtr spriteLayerP);
  86.  
  87. SW_FUNC short SWCountNumSpritesInLayer(
  88.     SpriteLayerPtr spriteLayerP);
  89.  
  90. SW_FUNC OSErr SWSwapSprite(
  91.     SpritePtr srcSpriteP,
  92.     SpritePtr dstSpriteP);
  93.  
  94. SW_FUNC OSErr SWInsertSpriteAfterSprite(
  95.     SpritePtr newSpriteP,
  96.     SpritePtr dstSpriteP);
  97.  
  98. SW_FUNC OSErr SWInsertSpriteBeforeSprite(
  99.     SpritePtr newSpriteP,
  100.     SpritePtr dstSpriteP);
  101.  
  102. SW_FUNC SpritePtr SWGetNextSprite(
  103.     SpriteLayerPtr spriteLayerP,
  104.     SpritePtr curSpriteP);
  105.  
  106. SW_FUNC SpritePtr SWGetPreviousSprite(
  107.     SpriteLayerPtr spriteLayerP,
  108.     SpritePtr curSpriteP);
  109.  
  110. SW_FUNC void SWLockSpriteLayer(
  111.     SpriteLayerPtr spriteLayerP);
  112.     
  113. SW_FUNC void SWUnlockSpriteLayer(
  114.     SpriteLayerPtr spriteLayerP);
  115.  
  116. SW_FUNC void SWMoveSpriteLayer(
  117.     SpriteLayerPtr spriteLayerP);
  118.  
  119. SW_FUNC void SWCollideSpriteLayer(
  120.     SpriteWorldPtr    spriteWorldP,
  121.     SpriteLayerPtr srcSpriteLayerP,
  122.     SpriteLayerPtr dstSpriteLayerP);
  123.  
  124. SW_FUNC void SWSortSpriteLayer(SpriteLayerPtr theLayer);
  125.  
  126. SW_FUNC void SWPauseSpriteLayer(
  127.     SpriteLayerPtr    spriteLayerP);
  128.  
  129. SW_FUNC void SWUnpauseSpriteLayer(
  130.     SpriteLayerPtr    spriteLayerP);
  131.  
  132. SW_FUNC void SWSetLayerAsNonScrolling(
  133.     SpriteLayerPtr    spriteLayerP,
  134.     Boolean layerIsNonScrolling);
  135.  
  136. SW_FUNC SpritePtr SWFindSpriteByPoint(
  137.     SpriteLayerPtr spriteLayerP,
  138.     SpritePtr startSpriteP,
  139.     Point testPoint);
  140.  
  141. #if PRAGMA_ALIGN_SUPPORTED
  142. #pragma options align=reset
  143. #endif
  144.  
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148.  
  149. #endif /* __SPRITELAYER__ */